Adaptive dynamic management of parameters such as power, performance, temperature and reliability is becoming an important issue for computer systems. Workload characteristics in a modern networking environment are very dynamic. In order to maximize performance, minimize power usage, and/or increase reliability, it is important to model dynamics in workload performance, as well as power and/or reliability metrics.
In recent years, application phase behavior has seen growing interest with two main goals. In the first category, researchers seek to identify program phases from simulation traces, or runtime power or performance behavior, in order to select representative points within a run to study or simulate. In the second category, the goal is to recognize phase shifts dynamically in running systems, in order to perform on-the-fly optimizations. These optimizations include a wide range of possible actions such as voltage/frequency scaling, thermal management, dynamic cache reorganizations, and dynamic compiler optimizations of particular code regions. The second category centers on use of past values to predict next values, but without any mechanism regarding how to use the past values in a principled and optimum way. In that respect, the techniques are ad-hoc and not applicable to different metrics of interest for a program running on a computer system; rather, these predictors are designed to work for a specific metric of interest, and may not generalize to unseen data. Even though there are a number of recent studies addressing this issue, the previously proposed methods are, as just noted, rather ad-hoc. As such they are not reliable predictors and their success has been limited.
It would thus be desirable to overcome the limitations in previous approaches.